package com.example.springbootintegration.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @auther: zhangxin
 * @Description:
 */
@Configuration
@EnableScheduling
@MapperScan("com.example.springbootintegration.mapper")
@EnableWebMvc
public class SpringbootIntegrationConfiguration implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //添加映射路径，“/**”表示允许所有路径进行跨域访问
        registry.addMapping("/**")
                //开放哪些IP、端口、域名的访问权限
                // 注意：*不能满足带有cookie的访问，这要求Origin必须是全匹配
                .allowedOrigins("*")
                //是否允许发送Cookie信息
                //设置allowCredentials=true后，响应中Access-Control-Allow-Origin头的值不能是*，必须明确地指定出客户端的origin。
                //.allowCredentials(true)
                //开放哪些Http方法，允许跨域访问
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                //允许HTTP请求中的携带哪些Header信息
                .allowedHeaders("*")
                //maxAge(3600)表示在3600秒内不再发送预检验请求，用于缓存该结果
                .exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L);
    }

}
